<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<!-- 
	Copyright (C) 2007, 2008, 2009, 2010, 2011. PARP Research Group.
	<http://perception.inf.um.es>
	University of Murcia, Spain.

	This file is part of the QVision library.

	QVision is free software: you can redistribute it and/or modify
	it under the terms of the GNU Lesser General Public License as
	published by the Free Software Foundation, version 3 of the License.

	QVision is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU Lesser General Public License for more details.

	You should have received a copy of the GNU Lesser General Public
	License along with QVision. If not, see <http://www.gnu.org/licenses/>.
-->

<html><head><meta http-equiv="content-Type" content="text/html;charset=UTF-8">
<title>QVision: Qt&#39;s Image, Video and Computer Vision Library</title>
<meta name="title" content="QVision" />
<meta name="dc.title" content="QVision" />
<meta name="url" content="http://perception.inf.um.es/QVision" />
<meta name="author" content="PARP Research Group - http://perception.inf.um.es" />
<meta name="revisit-after" content="30 DAYS"/>
<meta name="robots" content="index,follow"/>
<meta name="classification" content="*">
<meta name="rating" content="Safe For Kids">
<meta name="distribution" content="GLOBAL"/>
<meta name="description" content="Qt's Image, Video and Computer Vision Library"/>
<meta name="page-topic" content="Computer Vision research and prototype programming"/>
<meta name="geo.country" content="ES" />

<!--
Keywords:
By license:		open source, gnu, lgpl, gpl, free
By theme:		computer vision, image processing, robotics, programming, source, development
By usage:		library, toolkit, framework, prototype, application
By programming specs:	object oriented, c++, block programming, reusability, gui, graphical, parallel computing, high performance, GPU, prototyping
Interoperability with:	Qt, GSL, GNU Scientific library, OpenCV, CGAL, QWT, CUDA, mplayer, IPP, Intel Image Performance Primitives, blas, lapack
Functionallity:		image features, matrix algebra, projective geometry, mser, function minimization, function optimization, canny operator, harris operator, corner detection, performance evaluation, cpu usage, graphical interface
Main data-types:	matrix, vector, tensor, quaternion, image, polyline
Video sources:		webcam, camera, stream
Devices:		embedded, desktop computer, laptop, mini-laptop
Authors:		PARP research group. University of Murcia, Spain.
-->

<meta name="keywords" content="augmented reality, sfm, structure from motion, open source, gnu, lgpl, gpl, free, computer vision, image processing, robotics, programming, source, development, library, toolkit, framework, prototype, application, object oriented, c++, block programming, reusability, gui, graphical, parallel computing, high performance, GPU, prototyping, Qt, GSL, GNU Scientific library, OpenCV, CGAL, QWT, CUDA, mplayer, IPP, Intel Image Performance Primitives, blas, lapack, image features, matrix algebra, projective geometry, mser, function minimization, function optimization, canny operator, harris operator, corner detection, performance evaluation, cpu usage, graphical interface, matrix, vector, tensor, quaternion, image, polyline, webcam, camera, stream, embedded, desktop computer, laptop, mini-laptop, University of Murcia, Spain, PARP research group, vision por computador"/>
<meta http-equiv="keywords" content="augmented reality, sfm, structure from motion, open source, gnu, lgpl, gpl, free, computer vision, image processing, robotics, programming, source, development, library, toolkit, framework, prototype, application, object oriented, c++, block programming, reusability, gui, graphical, parallel computing, high performance, GPU, prototyping, Qt, GSL, GNU Scientific library, OpenCV, CGAL, QWT, CUDA, mplayer, IPP, Intel Image Performance Primitives, blas, lapack, image features, matrix algebra, projective geometry, mser, function minimization, function optimization, canny operator, harris operator, corner detection, performance evaluation, cpu usage, graphical interface, matrix, vector, tensor, quaternion, image, polyline, webcam, camera, stream, embedded, desktop computer, laptop, mini-laptop, University of Murcia, Spain, PARP research group, vision por computador"/>
<meta http-equiv="pragma" content="no-cache"/>
<meta http-equiv="title" content="QVision"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="tabs.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="favicon.ico" />
</head><body>

<table width="100%"><tr>
	<td><a href="http://perception.inf.um.es/"><img src="parp.png" border="0" /> <big>PARP Research Group</big></a></td>
	<td align="right"><a href="http://www.um.es/"><big>Universidad de Murcia</big> <img src="um.png" border="0" /></a></td>
</tr></table>

<hr /><br />

<table width="95%" align="center"><tr><td>

<!-- Generated by Doxygen 1.6.3 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
          <form id="FSearchBox" action="search.php" method="get">
            <img id="MSearchSelect" src="search/search.png" alt=""/>
            <input type="text" id="MSearchField" name="query" value="Search" size="20" accesskey="S" 
                   onfocus="searchBox.OnSearchFieldFocus(true)" 
                   onblur="searchBox.OnSearchFieldFocus(false)"/>
          </form>
        </div>
      </li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>QVNumericPlot Class Reference<br/>
<small>
[<a class="el" href="group__qvqwt.html">GUI blocks based on the QWT library</a>]</small>
</h1><!-- doxytag: class="QVNumericPlot" -->
<p>Class for plot graphs of block's int or double properties.  
<a href="#_details">More...</a></p>

<p><code>#include &lt;<a class="el" href="qvnumericplot_8h_source.html">QVNumericPlot</a>&gt;</code></p>
<table border="0" cellpadding="0" cellspacing="0">
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Class for plot graphs of block's int or double properties. </p>
<p>Class <a class="el" href="classQVNumericPlot.html">QVNumericPlot</a> shows a widget which will read a set of integer or double values and plot their time evolution during the corresponding block execution.</p>
<p>The abscissa axis will display the number of iterations (or the number of elapsed seconds, depending on the boolean <em>time</em> parameter of the constructor QVNumericPlot::QVNumericPlot ). The ordinate axis will scale to the maximum value of the integer or double values read from the block (or blocks) in the time interval displayed. One <a class="el" href="classQVNumericPlot.html">QVNumericPlot</a> widget can read integer or double values from several blocks, but obviously, for this to work correctly, either <em>a)</em> the blocks must be synchronized, or <em>b)</em> the <a class="el" href="classQVNumericPlot.html" title="Class for plot graphs of block&#39;s int or double properties.">QVNumericPlot</a> should display the elapsed time in the abscissa axis (not the number of iterations).</p>
<p>To show the usage of the class, first we need a block that produces some integer or double output values which we are interested in monitoring. The following code shows an example:</p>
<div class="fragment"><pre class="fragment"><span class="keyword">class </span>MyBlock: <span class="keyword">public</span> <a class="code" href="classQVProcessingBlock.html" title="Base class for Block threads.">QVProcessingBlock</a>
        {
        <span class="keyword">public</span>:
                MyBlock(QString name): <a class="code" href="classQVProcessingBlock.html" title="Base class for Block threads.">QVProcessingBlock</a>(name)
                        {
                        addProperty&lt;int&gt;(<span class="stringliteral">&quot;val_int&quot;</span>, outputFlag);
                        addProperty&lt;double&gt;(<span class="stringliteral">&quot;val_double&quot;</span>, outputFlag);
                        [...]
                        }

                <span class="keywordtype">void</span> iterate()
                        {
                        <span class="keywordtype">int</span>     val_int;
                        <span class="keywordtype">double</span>  val_double;
                        [...]
                        <span class="comment">// Calculate values for &#39;val_int&#39; and &#39;val_double&#39; variables.</span>
                        [...]
                        setPropertyValue&lt;int&gt;(<span class="stringliteral">&quot;val_int&quot;</span>, val_int);
                        setPropertyValue&lt;double&gt;(<span class="stringliteral">&quot;val_double&quot;</span>, val_double);
                        [...]
                        }
        }
</pre></div><p>And then, in the main function, we can create a <a class="el" href="classQVNumericPlot.html" title="Class for plot graphs of block&#39;s int or double properties.">QVNumericPlot</a> object and link it with those properties, like this:</p>
<div class="fragment"><pre class="fragment"><span class="preprocessor">#include &lt;QVNumericPlot&gt;</span>

<span class="keywordtype">void</span> main()
        {
        [...]
        MyBlock myBlock(<span class="stringliteral">&quot;block&quot;</span>);
        <a class="code" href="classQVNumericPlot.html" title="Class for plot graphs of block&amp;#39;s int or double properties.">QVNumericPlot</a> numericPlot(<span class="stringliteral">&quot;Values int y double&quot;</span>,<span class="keyword">false</span>);
        myBlock.linkProperty(<span class="stringliteral">&quot;val_int&quot;</span>,numericPlot);
        myBlock.linkProperty(<span class="stringliteral">&quot;val_double&quot;</span>,numericPlot);
        [...]
        }
</pre></div><p>The result will be an application showing the following window widget:</p>
<div align="center">
<img src="qvision_numericplot_window.png" alt="qvision_numericplot_window.png"/>
</div>
<p>If the numeric plot would have been declared with <em>true</em> as last parameter (instead of <em>false</em>), then the abscissas axis would show time in seconds (instead of number of iterations), like this:</p>
<div align="center">
<img src="qvision_numericplot_window_true.png" alt="qvision_numericplot_window_true.png"/>
</div>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classQVHistogramPlot.html" title="Widget for plotting QList&lt;double&gt; property values from a block, as an histogram...">QVHistogramPlot</a> </dd>
<dd>
<a class="el" href="classQVCPUPlot.html" title="Class for plot graphs of block&#39;s cpustat properties.">QVCPUPlot</a> </dd></dl>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/qvblockprogramming/qvguiblocks/<a class="el" href="qvnumericplot_8h_source.html">qvnumericplot.h</a></li>
</ul>
</div>
</td></tr></table>

<br /><hr><br />
<center><a href="http://perception.inf.um.es/QVision">QVision framework</a>.
<a href="http://perception.inf.um.es">PARP research group</a>.
Copyright &copy; 2007, 2008, 2009, 2010, 2011.</center>
<br />
</body>
</html>
